package com.dc.commons.jpa.listeners;

import javax.persistence.PrePersist;

import com.dc.commons.helper.DateHelper;
import com.dc.commons.jpa.TicketWapper;
import com.dc.commons.persistence.able.AuditAble;
import com.dc.commons.persistence.able.IDAble;
import com.dc.commons.persistence.annocation.DefaultStatus;
import com.dc.commons.spring.SpringBeanFactory;
import com.dc.commons.status.AuditStatus;
import com.dc.commons.utils.AnnotationUtil;

/*******************************************************************************<P>
 * 文件名: AuditJpaListener.java <br>
 * 版本: 1.0<br>
 * 描述: 审核监听<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2016年6月8日 下午3:39:58<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
public class AuditJpaListener {

	@PrePersist
	public void prepersist(IDAble idAble){
		if(idAble instanceof AuditAble){
			AuditAble auditAble=(AuditAble)idAble;
			AuditStatus auditStatus=auditAble.getAuditStatus();
			if(auditStatus==null){
				DefaultStatus defaultStatus=AnnotationUtil.getAnnotation(auditAble.getClass(), DefaultStatus.class);
				if(defaultStatus!=null){
					auditStatus=defaultStatus.auditStatus();
				}
			}
			TicketWapper ticketWapper=SpringBeanFactory.getBean(TicketWapper.class);
			auditAble.setAuditStatus(auditStatus);
			auditAble.setAuditKey(ticketWapper.getMember());
			auditAble.setAuditDate(DateHelper.newDate());
		}
		
	}
}
